package aventuraespacial;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import java.util.ArrayList;

/**
 * @author   woodoo
 */                     
public class Extraterrestre extends ObjetoEspacial{
 
	/************************* CONSTANTES DE EXTRATERRESTRE  ****************************/
	
	
	static final int ANCHO_EXTRATERRESTRE=50;
	static final int ALTO_EXTRATERRESTRE=50;
	static final int VELOCIDAD_EXTRATERRESTRE =7;
	static final String NOMBRE_EXTRATERRESTRE= "extraterrestre.png";
	
	/**
	 * ATRIBUTOS DE EXTRATERRESTRE
	 * @uml.property  name="listaBala"
	 */  
    
   
	private ArrayList<Bala> listaBala;     
	 private Image imagenExtraterrestre;
	
	/************************* CONSTRUCTOR DE EXTRATERRESTRE  ****************************/  
	
  
	public Extraterrestre(double x, double y, double velocidad, double angulo){
    	this.setAngulo(angulo);
        this.setX(x);
        this.setY(y);
        this.setVelocidad(velocidad);
        this.setVivo(true);
        listaBala= new ArrayList<Bala>();
        this.setForma(new Rectangle(ANCHO_EXTRATERRESTRE,ALTO_EXTRATERRESTRE));
        this.imagenExtraterrestre = cargarImagen(NOMBRE_EXTRATERRESTRE);
    }
	
	/**
	 * GETTERS
	 * @uml.property  name="listaBala"
	 */
	
	
	public ArrayList<Bala> getListaBala() {
	        return listaBala;	    }
	
	
	/************************* METODOS DE EXTRATERRESTRE  ****************************/
	
    
	 public void mover(){}
    
    public void disparar(){}
    
    
    /************************* IMPLEMENTACION DE METODOS ABSTRACTOS  ********************/


	@Override
	public Rectangle getBordes() {
		int mitadAncho= (int) (ANCHO_EXTRATERRESTRE/2 );
		int mitadAlto=(int) (ALTO_EXTRATERRESTRE/2) ;
		return new Rectangle((int)this.getX()-mitadAncho,(int)this.getY()-mitadAlto,ANCHO_EXTRATERRESTRE,ALTO_EXTRATERRESTRE);
		
	}
	
	public boolean fueraDePantalla(){
		if (this.x<(0) || this.x> (EspacioExterior.ANCHO_PANTALLA) ) return true;
        else if ( this.y< (0) || this.y> (EspacioExterior.ALTO_PANTALLA)) return true;
            else return false;
	}
    
	
    
	@Override
    public double calcDirX(){
		return (double) (Math.cos(angulo*Math.PI/180));
	}
    @Override
    public double calcDirY(){
		return (double) (Math.sin(angulo*Math.PI/180));
	} 
    
    
    @Override
    public void dibujar(Graphics2D g){
    	AffineTransform identidad= new AffineTransform();
    	AffineTransform trans= new AffineTransform();
    	
    	trans.setTransform(identidad);
    	trans.translate(x-(ANCHO_EXTRATERRESTRE/2), y-(ALTO_EXTRATERRESTRE/2));
    	//LA IMAGEN ES DE 32X32 , ANCHO_EXTRATERRESTRE/32 =1.5
    	
    	trans.scale(1.5, 1.5);
    	g.drawImage(this.imagenExtraterrestre,trans,null);
    	/*g.setTransform(identidad);
		g.translate(getX()-(Extraterrestre.ANCHO_EXTRATERRESTRE/2), getY()-(Extraterrestre.ALTO_EXTRATERRESTRE/2));
		g.setColor(Color.ORANGE);
		g.fill(getForma());*/
		g.setTransform(identidad);
		g.setColor(Color.BLACK);
		g.drawRect((int)getX(), (int)getY(), 1,1);
		
		if(ObjetoEspacial.isBordesActivados()){
			g.setTransform(identidad);
			g.setColor(Color.WHITE);
			g.draw(getBordes());
		}
    }
    
           
}